package com.east.sng.utils;

import com.east.sng.entity.result.EncryptedData;
import org.apache.shiro.crypto.SecureRandomNumberGenerator;
import org.apache.shiro.crypto.hash.SimpleHash;

/**
 * @author east
 * @date: 2020/12/28
 * @Description: encrypt data tool
 **/
public class EncryptDataUtil {

    /**
     * 通过shiro给密码进行盐值加密
     * @param password
     * @return
     */
    public static EncryptedData encryptPasswrod(String password){
        //获取随机数
        String randomNum = new SecureRandomNumberGenerator().nextBytes().toHex();
        //对初始密码进行加密得到初始盐值
        String initSalt = new SimpleHash(
                "md5",
                password,
                randomNum,
                3).toHex();
        //初始盐值的一半与随机数的一半拼接得到最终盐值
        String salt = initSalt.substring(0,initSalt.length()/2)+randomNum.substring(0,randomNum.length()/2);
        //进行盐值加密
        String encryptPassword = new SimpleHash(
                "md5",
                password,
                salt,
                3).toHex();
        return new EncryptedData(encryptPassword,salt);
    }

    /**
     * 给手机号进行加密，前面显示3位 中间为星号 尾号显示4位
     * @param phone
     * @return
     */
    public static String encryptPhone(String phone) {
        //截取前面三位作为前面显示部分
        String frontNumber = phone.substring(0, 3);
        //截取后面四位作为尾号
        String tailNumber = phone.substring(phone.length()-4);
        //拼接结果
        return frontNumber+"****"+tailNumber;
    }

}
